<?php

require_once('FonteDAO.php');

class Fonte
{
     private $id;            // Chave-prim�ria da fonte cadastrada no banco de dados
     private $programa;   // Chave-estrangeira do programa ao qual a fonte est� associada.
     private $tipoDespesa;   // Tipo de despesa da fonte podendo ser 1 - Corrente ou 2 - Capital
     private $fonteRecurso;  // Identificador num�rico da fonte de recurso
     private $valor;         // Valor dessa fonte
     private $dao;           // Objeto para acesso ao banco de dados

     public function __set( $var, $val )
     {
            $this->$var = $val;
     }

     public function __get( $var )
     {
            return $this->$var;
     }

     public function __construct( $id = NULL, $programa = NULL, $tipoDespesa = NULL, $fonteRecurso = NULL, $valor = NULL)
     {
            $this->id = $id;
            $this->programa = $programa;
            $this->tipoDespesa = $tipoDespesa;
            $this->fonteRecurso = $fonteRecurso;
            $this->valor = $valor;
            $this->dao = new FonteDAO();
     }
     
     public function CadastrarFonte()
     {
     	$resultado = $this->dao->CadastrarFonte($this);
     	return $resultado;
     }
     
     public function AlterarFonte()
     {
     	$resultado = $this->dao->AlterarFonte($this);
     	return $resultado;
     }
     
     public function ExcluirFonte( $fonteId )
     {
     	$resultado = $this->dao->ExcluirFonte( $fonteId );
     	return $resultado;	
     }

     /**
     Busca na tabela t_fonte todas as fontes v�nculadas ao programa de identifica��o programaId.
     Para cada registro encontrado ser� criada uma inst�ncia de Fonte com todos os valores das colunas do registro retornado.
     Por fim, este m�todo retornar� um array de objetos Fonte para os registros encontrados no banco de dados.
     @programaId - Chave-prim�ria no banco de dados do programa ao qual as fontes est�o v�nculadas.
     @return - Retorna um array de objetos do tipo Fonte. Caso n�o encontre nenhum registro retorna FALSE.
     */
     public function CarregarFontes( $programaId )
     {
            $resultado = $this->dao->LoadFontes( $programaId );
            return $resultado;
     }

	 public function CarregarFontePorAcaoTipoDespesa( $acaoId , $fonteRecurso, $tipoDespesa )
     {
            $resultado = $this->dao->LoadFontePorAcaoTipoDespesa($acaoId,$fonteRecurso,$tipoDespesa);
            return $resultado;
     }
     
     /**
     Busca na tabela t_fonte pelo registro de chave-prim�ria $id.
     @id - Chave-prim�ria da fonte cadastrada no banco de dados.
     @return - Retorna um objeto do tipo Fonte com todos os valores das colunas associadas ao registro. Caso n�o encontre nenhum registro retorna FALSE.
     */
     public function CarregarFonte( $id )
     {
            $resultado = $this->dao->LoadFonte( $id );
            return $resultado;
     }
     

      /**
      Busca no banco de dados pela fonte de recurso de chave-prim�ria $fonteId
      @fonteId - Chave-prim�ria da fonte cadastrada no banco
      @return - Retorna uma string com o nome da fonte. Caso n�o encontre nenhum resultado, retorna FALSE.
      */
      public function CarregarFonteRecurso( $fonteId )
      {
             $resultado = $this->dao->LoadRecurso( $fonteId );
             return $resultado;
      }
      /**
      Tira a mascara do valor para poder salvar no banco de dados
      @valorFonte - valor mascarado da fonte
      @return - Retorna uma string com o valor da fonte sem as mascaras de formata��o.
      */
      
      public function TirarFormatacaoValor( $valorFonte )
      {
      	$valorSemPonto = $valorSemVirgula = $valorSemFormato = "";
      	$vlr = "";
		$valorSemPonto = explode(".",$valorFonte);
		
		for($i=0;$i<count($valorSemPonto);$i++)
		$vlr .= $valorSemPonto[$i];
		
		$valorSemVirgula = explode(",",$vlr);
		for($i=0;$i<count($valorSemVirgula);$i++)
		$valorSemFormato .= $valorSemVirgula[$i];
		
		return $valorSemFormato;
      	
      }

}
?>
